1. Field of the Invention
The present invention relates to computer systems, and deals more particularly with methods, systems, and computer program products for dynamically modifying an application program's behavior in response to changing environmental conditions (such as network changes, system changes, and so forth).
2. Description of the Related Art
Today's global network is a complex interweaving of multiple network technologies, server platforms, client capabilities, and application requirements. A key application requirement is the ability to provide differing Quality of Service (hereinafter, “QoS”) values, such as priority specification for specific units of work, such that more important traffic receives favored status in the allocation of server and network resources. FIG. 1 depicts a representative modem distributed computing environment 100, in which two classes 105, 110 of servers have been chosen arbitrarily on which to anchor the portrayed configuration. Note that there are many more types of servers than those shown, and that in reality, modem computing networks tend to be significantly more complex than the one shown. Nonetheless, environment 100 is sufficient to demonstrate the current networking environment and to illustrate advantages of the present invention.
The server classes 105, 110 shown in FIG. 1 represent (a) two multimedia servers 110 on which reside real-time, or near-real-time, applications and (b) one clustered server complex 105 with server instances 115 which support multiple differing applications. (The clustered server complex 105 is shown as having three instances 115, for purposes of illustration only. An actual clustered server complex might have more or perhaps fewer instances.) The applications which execute on these servers 105, 115 may perform a number of different types of functions, including transactions, queries, and large file transfers. The applications executing on the multimedia servers, for example, might transmit large amounts of data in the form of video streams or audio streams.
Client access to the servers and server complex is provided by a multiplicity of network media. In addition to being of various types, these media are also often separated by organizational boundaries. For example, one branch office of an enterprise might use Token Ring local area networks (“LANs”) for connecting user devices, while a branch office with mobile personnel might rely more heavily on wireless media. The clients in the figure are shown as being connected by three different types of local network media attachment, and the clients having these types of attachment are designated in the figure as “cabled stations” (“CS”), “wide-area networking stations” (“wS”), and “wireless stations” (“WS”). As the terms are used herein, cabled stations are those connected by a LAN, and wide-area networking stations are those connected by a wide-area networking (“WAN”) protocol. Representative examples of WAN protocols include: Frame Relay; Asynchronous Transfer Mode (“ATM”); variations of Digital Subscriber Line (“DSL”), also referred to collectively as “xDSL”; and so forth. Wireless stations are those connected using a wireless protocol.
Revisiting the discussion of the classes of servers which are accessible in the network, it is observed that the collective set of applications running on these servers transmits and receives data with varying characteristics. These characteristics include an aggregate amount of data sent/received per unit of time, whether the application has real-time requirements, sizes of data objects typically processed by the application, etc. Furthermore, within the course of a single logical unit of work, a single application may require the transmission/reception of data in multiple formats, where each of these formats may have its own attributes.
In some cases, QoS values are used as the subject matter of service contracts; in other cases, QoS values may simply represent user expectations. Processing data streams which have varying characteristics (such as those described above) in a manner that successfully meets QoS expectations requires the introduction of various workload management prioritization schemes. Consider the following broad classifications of data streams:
Real-Time Data: Real-time, or time-sensitive, data must be delivered in an ordered and highly predictable manner, such that data reception by the client is perceived as a single uniform stream. An example of real-time data is transmission of a digital video file.
Mission-Critical Data: Mission-critical data may be a customer transaction, an interactive inventory control program, or any other operation deemed critical to the successful operation of a particular business. For example, a customer's order to purchase goods or services may be considered mission-critical for an e-commerce business.
Non-critical Data Transfers: Non-critical data transfer does not imply that the data stream is not important. It simply implies a lower need for immediate delivery and processing of the data, as opposed to mission-critical or real-time data transfer. An example of non-critical data transfer may be downloading an image from an on-line catalog.
As will be obvious, the detailed definition of these rather broad classifications (i.e., what type of data falls into each category) may vary from one enterprise to another. It will generally be true, however, that all enterprises will require that servers and networks order the processing of data such that higher-priority data is processed and transferred ahead of lower-priority data. The term “Quality of Service” is often used to describe this ordering requirement, and ordering or prioritization techniques are generally applicable to both server-based technologies and network technologies.
FIG. 2 depicts a simple computing environment 200 that may be using current QoS techniques. While the figure depicts a relatively simple configuration, it is sufficient to demonstrate the problems that arise in providing the proper ordering of traffic flow. The figure shows data flowing from the server cluster 105 and a multimedia server 110 to a set of clients (depicted as C.1, C.2, C.3, and C.4) that share the same LAN 220. In this example, assume that clients C.1 and C.3 are receiving data from two different applications resident on a selected one of the servers within the cluster 105. (Alternatively, each of these clients may be receiving data from a different one of the clustered servers.) Also assume that the other clients C.2 and C.4 are part of a multicast broadcast of a video stream from multimedia server 110, and that traffic destined for this set of four clients shares the WAN facilities 215 as well as the router gateway 225 (denoted as “S/R1” in the figure) to their (shared) local LAN 220.
In the example scenario of FIG. 2, suppose that the high packet volume for the multimedia traffic sent to clients C.2 and C.4 completely overwhelms the capabilities of the router gateway 225, or perhaps of the LAN 220. In this situation, the traffic flow for application data sent to clients C.1 and C.3 will be degraded, and some data may even be discarded before it reaches the clients. Client C.1 might be interacting with an application program that performs some type of relatively low-priority function, for which this traffic degradation is not a serious issue. However, client C.3 might be performing a mission-critical transaction. Thus, it is necessary for a QoS strategy to be in place to ensure that the differing requirements of the clients are met.
Both server-based and network-based prioritization technologies are commonly used in the prior art to provide traffic ordering in this type of environment in order to allow the mission-critical transactions to flow ahead of lower-priority traffic without disruption of the real-time video stream.
Regarding server-based mechanisms, there exists a set of services that allow the user (such as a systems administrator) to specify which task is to receive priority utilization of system resources, e.g. storage, central processing unit (“CPU”) share, etc. These prioritization services are typically platform-specific and vendor-specific, and are generally more sophisticated on more advanced platforms, such as OS/390®, AIX®, Solaris™, etc. In addition, the techniques used to assign resources to a task are generally non-standard and vary with the platform and vendor. (“OS/390” and “AIX” are registered trademarks of the International Business Machines Corporation, hereinafter “IBM”, and “Solaris” is a trademark of Sun Microsystems, Inc.)
Network-based prioritization mechanisms generally act to associate a given traffic stream, connection, or individual packet with a user-requested and system-approved transmission priority. These prioritization mechanisms may be media-specific (such as ATM QoS specification techniques) or network protocol-specific. Examples of the latter case include Advanced Peer-to-Peer Networking (“APPN”) class of service (“COS”) features and the Transmission Control Protocol/Internet Protocol (“TCP/IP”) differentiated services protocol (which is sometimes referred to as “DiffServ”). APPN COS values are derived from a mode name specified by a session initiator, and DiffServ values are specified by setting a bit pattern of a particular field in IP packet headers.
Typically, the combination of server-based (or, equivalently, “system-based”) and network-based prioritization mechanisms act in concert to ensure that higher-priority network traffic is processed ahead of lower-priority traffic. These mechanisms may also act to ensure that required data stream attributes are realized. For example, the reduction of jitter in real-time data streams is an attribute that may be controlled in this manner. (In this context, the term “jitter” refers to non-uniform time intervals for delivery of real-time data streams. Bad cases of jitter may result in video or audio interference.) Because the various mechanisms use vendor-specific, media-specific, and/or network protocol-specific techniques, however, as discussed above, there is a huge administrative burden placed on system providers and network providers to coordinate and control the mechanisms to ensure that the result is a properly-tuned system. Dynamic, often unpredictable changes to the environment make this task even more daunting.
Therefore, even with the constantly-improving technologies which are being deployed in today's servers and networks, improvements are required to achieve optimal QoS control, and in particular to ensure that user expectations, including contracted system and network service levels, can be met.